package com.lqian.demo01;

import com.lqian.utils.SleepHelper;

public class Interrupt_and_sleep {

    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // 当你调用sleep这个方法时，它本身时抛出InterruptException这个异常的
                // sleep()必须捕获异常
                // 如果你在当前线程调用了 t.interrupt();
                // ***只要你catch这个异常 默认会帮你把标志位复位***
                // sleep在睡眠的时候 不到时间是没法叫醒的 这个时候可以设置标志位
                // 然后呢 必须得catch住InterruptedException来进行处理 决定继续睡或者是别的逻辑
                System.out.println("Thread is interrupted!");
                System.out.println(Thread.currentThread().isInterrupted()); // >>> flag reset!
            }

        });

        t.start();
        SleepHelper.sleepSeconds(3);
        t.interrupt(); // >>> ture
    }
}
